home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible (2nd Edition) / OpenGL SuperBible e2.iso / tools / GLUT-3.7 / PROGS / DEMOS / WALKER / win32_dirent.h < prev   
Encoding:
C/C++ Source or Header  |  1998-08-12  |  955 b   |  52 lines

  1. #ifndef __win32_dirent__
  2. #define __win32_dirent__
  3.  
  4. /* For Win32 that lacks Unix direct support. */
  5.  
  6. #include <windows.h>
  7. #include <string.h>
  8.  
  9. struct dirent {
  10.   char d_name[MAX_PATH];
  11. };
  12.  
  13. typedef struct {
  14.   WIN32_FIND_DATA wfd;
  15.   HANDLE hFind;
  16.   struct dirent de;
  17. } DIR;
  18.  
  19. static DIR *
  20. opendir(char *pSpec)
  21. {
  22.   DIR *pDir = malloc(sizeof(DIR));
  23.   /* XXX Windows 95 has problems opening up "." though Windows NT does this
  24.      fine?  Open "*" instead of "." to be safe. -mjk */
  25.   pDir->hFind = FindFirstFile(strcmp(pSpec, ".") ? pSpec : "*",
  26.     &pDir->wfd);
  27.   return pDir;
  28. }
  29.  
  30. static void
  31. closedir(DIR * pDir)
  32. {
  33.   FindClose(pDir);
  34.   free(pDir);
  35. }
  36.  
  37. static struct dirent *
  38. readdir(DIR *pDir)
  39. {
  40.   if (pDir->hFind) {
  41.     strcpy(pDir->de.d_name, pDir->wfd.cFileName);
  42.     if (!FindNextFile(pDir->hFind, &pDir->wfd))
  43.       pDir->hFind = NULL;
  44.     return &pDir->de;
  45.   }
  46.   return NULL;
  47. }
  48.  
  49. #define fclose(f)  { if (f!=NULL) fclose(f); }
  50.  
  51. #endif /* __win32_dirent__ */
  52.